\section{Ejercicio 9: \textit{valuacionDamas}}
\subsection{Enunciado}
Definir la funci\'on
\texttt{
\\valuacionDamas :: Valuacion
}
\\que devuelve un n\'umero entre -1 y 1, asignando un puntaje a un estado del juego, siendo
-1 el valor m\'as desfavorable y 1 el m\'as favorable para el jugador al que le toca el turno actualmente
\subsection{Codigo}

\scriptsize\begin{verbatim}
 
 valuacionDamas :: Juego -> Double
 valuacionDamas (J c t) | (ganador (J c t) == (Just c)) = 1
                     | (ganador (J c t) == (Just (invertirColor c))) = -1
                     | otherwise = fromIntegral (2 * (2 * r + s)) / fromIntegral ((2 * rtot + 2 * stot) - 1)
 where r = length (reinas t c)
           s = length (simples t c)
           rtot = r + (length (reinas t (invertirColor c)) )
           stot = s + (length (simples t (invertirColor c)) )

 fichas :: Tablero -> Color -> [Posicion]
 fichas t c = [ (i,j) | i <- ['a'..'h'], j <- [1..8], (not (isNothing (contenido (i,j) t))) && 
                   (color (dameFicha (contenido (i,j) t)) == c) ]

 simples :: Tablero -> Color -> [Posicion]
 simples t c = [ x | x <- (fichas t c), isSimple (dameFicha (contenido x t))]

 reinas :: Tablero -> Color -> [Posicion]
 reinas t c = [ x | x <- (fichas t c), not (isSimple (dameFicha (contenido x t)))]


\end{verbatim}
\normalsize
